package com.ywl.common;

/**
 * @author 24040
 * @name R
 * @date 2022-08-25 15:30
 */

import com.ywl.entity.HouseDetail;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;

import java.io.Serializable;
import java.time.LocalDateTime;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

/**
 * 通用返回结果，服务端响应的数据最终都会封装成此对象
 * @param <T> 用于指定数据的泛型
 */
@Data
@ApiModel("响应对象")
public class R<T> implements Serializable {

    @ApiModelProperty("编码：200成功，500和其它数字为失败")
    private Integer status; //编码：1成功，0和其它数字为失败

    @ApiModelProperty("错误信息，用于回现")
    private String msg; //错误信息，用于回现

    @ApiModelProperty("数据")
    private T data; //数据

    @ApiModelProperty("true代表还有更多数据，false表示没有更多数据")
    private Boolean hasMore;

    @ApiModelProperty("动态数据")
    private Map map = new HashMap(); //动态数据

    @ApiModelProperty("时间错")
    private long time;
    /**
     * 登陆成功
     * @param object
     * @param <T>
     * @return
     */
    public static <T> R<T> success(T object) {
        R<T> r = new R<T>();
        r.data = object;
        r.status = 200; //成功
        return r;
    }

    public static <T> R<T> success(T object,boolean hasMore) {
        R<T> r = new R<T>();
        r.data = object;
        r.status = 200; //成功
        r.hasMore = hasMore;
        return r;
    }

    public static <T> R<T> success(T object,long time) {
        R<T> r = new R<T>();
        r.data = object;
        r.msg = (String)object;
        r.status = 200; //成功
        r.time = time;
        return r;
    }



    /**
     * 失败
     * @param msg
     * @param <T>
     * @return
     */
    public static <T> R<T> error(String msg) {
        R r = new R();
        r.msg = msg;
        r.status = 500; //错误
        r.hasMore = false;
        return r;
    }

    /**
     * 以键值对的方式add
     * @param key
     * @param value
     * @return
     */
    public R<T> add(String key, Object value) {
        this.map.put(key, value);
        return this;
    }

}
